package com.feri.fitness.us.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.feri.fitness.common.dto.UserAddDto;
import com.feri.fitness.common.vo.R;
import com.feri.fitness.us.dao.UserDao;
import com.feri.fitness.us.dao.UserLevelDao;
import com.feri.fitness.us.dao.UserMessageDao;
import com.feri.fitness.us.dao.UserWalletDao;
import com.feri.fitness.us.domain.User;
import com.feri.fitness.us.domain.UserLevel;
import com.feri.fitness.us.domain.UserMessage;
import com.feri.fitness.us.domain.UserWallet;
import com.feri.fitness.us.service.intf.UserService;
import com.feri.fitness.us.type.MessageType;
import org.omg.CORBA.PRIVATE_MEMBER;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author: 邢朋辉
 * @Date: 2023/1/10 15:09
 */
@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserDao dao;
    @Resource
    private UserLevelDao levelDao;
    @Resource
    private UserWalletDao walletDao;
    @Resource
    private UserMessageDao messageDao;



    @Transactional
    @Override
    public R register(UserAddDto dto) {
        //1.校验
        if(dto!=null){
            //2.查询
            User user=dao.selectOne(new QueryWrapper<User>().eq("phone",dto.getPhone()));
            if(user==null){
                //3.新增用户
                user=new User();
                BeanUtils.copyProperties(dto,user);
                user.setCtime(new Date());
                user.setFlag(1);
                if(dao.insert(user)>0){
                    //新人有礼-成长值
                    levelDao.insert(new UserLevel(user.getId(),50));
                    walletDao.insert(new UserWallet(user.getId(),1.0));
                    messageDao.insert(new UserMessage(user.getId(), MessageType.认证消息.getVal(),
                            "恭喜你完成注册，奖励红包1块钱！"));
                    //用户详情 等等初始化

                    return R.ok();
                }
            }
        }
        return R.fail();
    }
}
